package com.jt;

/**
 * @author 金帮嘉诚 @date 2021-09-06 星期一 16:35
 */

import redis.clients.jedis.Jedis;

import java.util.Set;

/**
 * 活动投票系统
 */
public class VoteDemo01 {

    //为了方便 将连接设置成全局  但是实际编写时 写在此处不能够多线程共享
    private static Jedis jedis = new Jedis("192.168.126.128", 6379);

    /**
     * 检查是否已经投票
     */
    static boolean checkVote(String activityId, String userId) {
        return jedis.sismember(activityId, userId);

    }

    /**
     * 投票后记录已经投票的用户
     *
     * @param activityId 活动id
     * @param userId     用户id
     * @return
     */
    static boolean addVote(String activityId, String userId) {
        if (checkVote(activityId, userId)) {
            System.out.println("您的用户id " + userId + "  您已经参与过这个投票");
            return false;
        }
        jedis.sadd(activityId, userId);
        System.out.println("用户id " + userId + "  投票成功");
        return true;
    }

    public static void main(String[] args) {
        // 1.设置一个活动
        // 1)获取id
        String activityId = "10001";

        // 2)活动标题
        String topic = "刘德华演唱会2022";

        // 3)活动内容

        // 2.投票设计
        String user1 = "100";
        String user2 = "101";
        String user3 = "102";

        // 2.1 投票不重复
        boolean vote1 = checkVote(activityId, user1);
        boolean vote2 = checkVote(activityId, user2);
        boolean vote3 = checkVote(activityId, user3);
        // 2.2 执行投票
        addVote(activityId, user1);
        addVote(activityId, user1);
        addVote(activityId, user2);
        // 2.3 显示投票人数
        Long activitiyVotes = getActivitiyVotes(activityId);
        System.out.println("已经投票人数 " + activitiyVotes);
        // 2.4 管理员查看投票记录
        Set<String> activityUsers = getActivityUsers(activityId);
        System.out.println("投票用户id = " + activityUsers);


    }

    private static Set<String> getActivityUsers(String activityId) {
        return jedis.smembers(activityId);
    }

    private static Long getActivitiyVotes(String activityId) {
        return jedis.scard(activityId);
    }
}
